package yl.hs.bmipfull.daos.salemanage;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import yl.hs.bmipfull.daos.BaseDao;
import yl.hs.bmipfull.pojo.salemanage.BuildProjectInfoEntity;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
* 作用:  客户工地信息持久层接口<br/>
* 创建时间: 2021年05月19日 14时41分05秒 <br/>
* @author 谢东
*/
@Repository
public interface IBuildProjectInfoDao extends BaseDao<BuildProjectInfoEntity>{

    /**
     *  查询客户工地信息信息
     *  @param map 查询条件 {@link BuildProjectInfoEntity}
     *  @return 客户工地信息-List<{@link BuildProjectInfoEntity}>
     */
    List<BuildProjectInfoEntity> queryList(@Param("map") Map<String, Object> map,@Param("tagSNArray") String[] tagSNArray);

     /**
      *  分页查询客户工地信息信息
      *  @param map 查询条件 {@link BuildProjectInfoEntity}
      *  @return 站内信息-List<{@link BuildProjectInfoEntity}>
      */
    List<BuildProjectInfoEntity> queryPage(@Param("map") Map<String, Object> map,@Param("tagSNArray") String[] tagSNArray,@Param("filters") List<Map<String,Object>> filters);

    /**
     * 根据查询条件统计数据数量
     * @param query 查询条件
     * @param tagSNArray 标签数据
     * @return 数据数量
     */
    Integer queryCountByCondition(@Param("map")Map<String,Object> query,@Param("tagSNArray") String[] tagSNArray,@Param("filters") List<Map<String,Object>> filters);
    /**
     * 根据客户工地信息编号修改状态
     * @param snArray 客户工地信息编号数组
     * @param state
     * @return
     */
    Integer changeStateBySn(String[] snArray,short state);

    /**
     * 根据工地名称查找工地信息
     * @param projectName 工地名称
     * @return 工地信息
     */
    BuildProjectInfoEntity findByName(String projectName);

    List<BuildProjectInfoEntity> findByNameList(List<String> projectNameList);

    /**
     * 根据编号查询工地名称
     * @param sn 编号
     * @return 工地名称
     */
    String findProjectNameBySn(String sn);

    BuildProjectInfoEntity findByNameAndAddr(@Param("projectName") String projectName,@Param("address") String address);

    @Select("select * from build_project_info where customerSN=#{customerSN} and state >=0")
    List<BuildProjectInfoEntity> getByCustomerSN(@Param("customerSN")String customerSN);

    @Select("select count(0) from build_project_info where state >=0")
    Integer getAllCount();

    List<BuildProjectInfoEntity> queryListBySNList(@Param("snList") List<String> projectSNList);
}